﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using AGPR.Locadora.Model;
using AGPR.Locadora.Utils;
using AGPR.Locadora.Web.Models;

namespace AGPR.Locadora.Web.Controllers
{
    /// <summary>
    /// Controlador do Cadastro de Funcionários
    /// </summary>
    public class FuncionariosController : BaseController
    {
        private static Funcionarios funcionarios = new Funcionarios();

        #region Index
        public ActionResult Index()
        {
            return RedirectToAction("consultar");
        }
        #endregion

        #region Cadastrar Funcionário

        public ActionResult Cadastrar()
        {
            ViewBag.Title = "Cadastrar Funcionário";

            return View();
        }

        [HttpPost]
        public ActionResult Cadastrar(FormCollection funcionario)
        {
            funcionarios.Cadastrar(funcionario);

            return this.Index();
        }

        #endregion

        #region Alterar Funcionário

        public ActionResult Alterar(int id)
        {
            var item = Funcionario.Get(id);

            if (item == null)
            {
                return this.Index();
            }

            ViewBag.Title = "Alterar Funcionário";
            ViewBag.Funcionario = item;

            return View();
        }

        [HttpPost]
        public ActionResult Alterar(int id, FormCollection funcionario)
        {
            ViewBag.Title = "Alterar Funcionário";
            ViewBag.Funcionario = funcionarios.Alterar(funcionario);

            return this.Index();
        }

        #endregion

        #region Alterar Senha

        public ActionResult AlterarSenha(int id)
        {
            var item = Funcionario.Get(id);

            if (item == null)
            {
                return this.Index();
            }

            ViewBag.Title = "Alterar Senha";
            ViewBag.Funcionario = item;

            return PartialView();
        }

        [HttpPost]
        public ActionResult AlterarSenha(int id, FormCollection dados)
        {
            Funcionario.Get(id).AlterarSenha(dados["senha_atual"], dados["nova_senha"]);

            return this.Index();
        }

        #endregion

        #region Excluir Funcionário

        public ActionResult Excluir(int id)
        {
            var item = Funcionario.Get(id);

            if (item != null)
            {
                item.Excluir();
            }

            return Redirect(Request.UrlReferrer.PathAndQuery);
        }

        #endregion

        #region Visualizar Funcionário

        public ActionResult Visualizar(int id)
        {
            var item = Funcionario.Get(id);

            if (item == null)
            {
                return this.Index();
            }

            ViewBag.Title = "Visualizar";
            ViewBag.Funcionario = item;

            if (Request.IsAjaxRequest())
            {
                return PartialView();
            }
            else
            {
                return View();
            }            
        }

        #endregion

        #region Consultar Funcionários

        public ActionResult Consultar(int p = 1)
        {
            ViewBag.Title = "Consulta de Funcionários";
            ViewBag.Total = Funcionario.Total();
            ViewBag.Paginacao = Paginacao.init(ViewBag.Total, p);            
            ViewBag.Funcionarios = Funcionario.GetAll(ViewBag.Paginacao.Offset);
            ViewBag.TotalPagina = ViewBag.Funcionarios.Count;

            return View();
        }

        #endregion
    }
}
